namespace ext.grid
{
	using System;
	using System.Runtime.CompilerServices;
	using System.Html;
	using System.Collections;
	
	
	/// <summary>
	/// After the data has been read into the client side cache ({@link Ext.data.Store Store}),
	/// the ColumnModel is used to configure how and what parts of that data will be displayed in the
	/// vertical slices (columns) of the grid. The Ext.grid.ColumnModel Class is the default implementation
	/// of a ColumnModel used by implentations of {@link Ext.grid.GridPanel GridPanel}.  Data is mapped into the store&apos;s records and then indexed into the ColumnModel using the
	/// {@link Ext.grid.Column#dataIndex dataIndex}:  
	/// {data source} == mapping ==&gt; {data store} == {@link Ext.grid.Column#dataIndex dataIndex} ==&gt; {ColumnModel}
	///  Each {@link Ext.grid.Column Column} in the grid&apos;s ColumnModel is configured with a
	/// {@link Ext.grid.Column#dataIndex dataIndex} to specify how the data within
	/// each record in the store is indexed into the ColumnModel.  There are two ways to initialize the ColumnModel class:  Initialization Method 1: an Array  
	/// var colModel = new Ext.grid.ColumnModel([
	/// { header: &quot;Ticker&quot;, width:...
	/// </summary>
	/// <htmlSummary>
	/// &lt;p&gt;After the data has been read into the client side cache (&lt;b&gt;{@link Ext.data.Store Store}&lt;/b&gt;),
	/// the ColumnModel is used to configure how and what parts of that data will be displayed in the
	/// vertical slices (columns) of the grid. The Ext.grid.ColumnModel Class is the default implementation
	/// of a ColumnModel used by implentations of {@link Ext.grid.GridPanel GridPanel}.&lt;/p&gt;
	/// &lt;p&gt;Data is mapped into the store&apos;s records and then indexed into the ColumnModel using the
	/// &lt;tt&gt;{@link Ext.grid.Column#dataIndex dataIndex}&lt;/tt&gt;:&lt;/p&gt;
	/// &lt;pre&gt;&lt;code&gt;
	/// {data source} == mapping ==&gt; {data store} == &lt;b&gt;&lt;tt&gt;{@link Ext.grid.Column#dataIndex dataIndex}&lt;/tt&gt;&lt;/b&gt; ==&gt; {ColumnModel}
	/// &lt;/code&gt;&lt;/pre&gt;
	/// &lt;p&gt;Each {@link Ext.grid.Column Column} in the grid&apos;s ColumnModel is configured with a
	/// &lt;tt&gt;{@link Ext.grid.Column#dataIndex dataIndex}&lt;/tt&gt; to specify how the data within
	/// each record in the store is indexed into the ColumnModel.&lt;/p&gt;
	/// &lt;p&gt;There are two ways to initialize the ColumnModel class:&lt;/p&gt;
	/// &lt;p&gt;&lt;u&gt;Initialization Method 1: an Array&lt;/u&gt;&lt;/p&gt;
	/// &lt;pre&gt;&lt;code&gt;
	/// var colModel = new Ext.grid.ColumnModel([
	/// { header: &quot;Ticker&quot;, width: 60, sortable: true},
	/// { header: &quot;Company Name&quot;, width: 150, sortable: true, id: &apos;company&apos;},
	/// { header: &quot;Market Cap.&quot;, width: 100, sortable: true},
	/// { header: &quot;$ Sales&quot;, width: 100, sortable: true, renderer: money},
	/// { header: &quot;Employees&quot;, width: 100, sortable: true, resizable: false}
	/// ]);
	/// &lt;/code&gt;&lt;/pre&gt;
	/// &lt;p&gt;The ColumnModel may be initialized with an Array of {@link Ext.grid.Column} column configuration
	/// objects to define the initial layout / display of the columns in the Grid. The order of each
	/// {@link Ext.grid.Column} column configuration object within the specified Array defines the initial
	/// order of the column display. A Column&apos;s display may be initially hidden using the
	/// &lt;tt&gt;{@link Ext.grid.Column#hidden hidden}&lt;/tt&gt;&lt;/b&gt; config property (and then shown using the column
	/// header menu). Fields that are not included in the ColumnModel will not be displayable at all.&lt;/p&gt;
	/// &lt;p&gt;How each column in the grid correlates (maps) to the {@link Ext.data.Record} field in the
	/// {@link Ext.data.Store Store} the column draws its data from is configured through the
	/// &lt;b&gt;&lt;tt&gt;{@link Ext.grid.Column#dataIndex dataIndex}&lt;/tt&gt;&lt;/b&gt;. If the
	/// &lt;b&gt;&lt;tt&gt;{@link Ext.grid.Column#dataIndex dataIndex}&lt;/tt&gt;&lt;/b&gt; is not explicitly defined (as shown in the
	/// example above) it will use the column configuration&apos;s index in the Array as the index.&lt;/p&gt;
	/// &lt;p&gt;See &lt;b&gt;&lt;tt&gt;{@link Ext.grid.Column}&lt;/tt&gt;&lt;/b&gt; for additional configuration options for each column.&lt;/p&gt;
	/// &lt;p&gt;&lt;u&gt;Initialization Method 2: an Object&lt;/u&gt;&lt;/p&gt;
	/// &lt;p&gt;In order to use configuration options from &lt;tt&gt;Ext.grid.ColumnModel&lt;/tt&gt;, an Object may be used to
	/// initialize the ColumnModel. The column configuration Array will be specified in the &lt;tt&gt;&lt;b&gt;{@link #columns}&lt;/b&gt;&lt;/tt&gt;
	/// config property. The &lt;tt&gt;&lt;b&gt;{@link #defaults}&lt;/b&gt;&lt;/tt&gt; config property can be used to apply defaults
	/// for all columns, e.g.:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;
	/// var colModel = new Ext.grid.ColumnModel({
	/// columns: [
	/// { header: &quot;Ticker&quot;, width: 60, menuDisabled: false},
	/// { header: &quot;Company Name&quot;, width: 150, id: &apos;company&apos;},
	/// { header: &quot;Market Cap.&quot;},
	/// { header: &quot;$ Sales&quot;, renderer: money},
	/// { header: &quot;Employees&quot;, resizable: false}
	/// ],
	/// defaults: {
	/// sortable: true,
	/// menuDisabled: true,
	/// width: 100
	/// },
	/// listeners: {
	/// {@link #hiddenchange}: function(cm, colIndex, hidden) {
	/// saveConfig(colIndex, hidden);
	/// }
	/// }
	/// });
	/// &lt;/code&gt;&lt;/pre&gt;
	/// &lt;p&gt;In both examples above, the ability to apply a CSS class to all cells in a column (including the
	/// header) is demonstrated through the use of the &lt;b&gt;&lt;tt&gt;{@link Ext.grid.Column#id id}&lt;/tt&gt;&lt;/b&gt; config
	/// option. This column could be styled by including the following css:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;
	/// //add this css *after* the core css is loaded
	/// .x-grid3-td-company {
	/// color: red; // entire column will have red font
	/// }
	/// // modify the header row only, adding an icon to the column header
	/// .x-grid3-hd-company {
	/// background: transparent
	/// url(../../resources/images/icons/silk/building.png)
	/// no-repeat 3px 3px ! important;
	/// padding-left:20px;
	/// }
	/// &lt;/code&gt;&lt;/pre&gt;
	/// Note that the &quot;Company Name&quot; column could be specified as the
	/// &lt;b&gt;&lt;tt&gt;{@link Ext.grid.GridPanel}.{@link Ext.grid.GridPanel#autoExpandColumn autoExpandColumn}&lt;/tt&gt;&lt;/b&gt;.
	/// </htmlSummary>
	/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
	[ScriptName("ColumnModel")]
	[ScriptNamespace("Ext.grid")]
	[Imported()]
	public partial class ColumnModel : ext.util.Observable
	{
		
		#region Constructors
		/// <summary>Constructor</summary>
		/// <param name="config">
		/// Specify either an Array of {@link Ext.grid.Column} configuration objects or specify
		/// a configuration Object (see introductory section discussion utilizing Initialization Method 2 above).
		/// </param>
		public ColumnModel(object config)
		{
		}
		
		public ColumnModel(ext.grid.ColumnModel_Configuration config)
		{
		}
		
		/// <summary>Constructor</summary>
		public ColumnModel()
		{
		}
		#endregion
		
		#region Fields
		/// <summary>
		/// The width of columns which have no {@link #width}
		/// specified (defaults to 100). This property shall preferably be configured through the
		/// {@link #defaults} config property.
		/// </summary>
		/// <htmlSummary>
		/// The width of columns which have no &lt;tt&gt;{@link #width}&lt;/tt&gt;
		/// specified (defaults to &lt;tt&gt;100&lt;/tt&gt;). This property shall preferably be configured through the
		/// &lt;tt&gt;&lt;b&gt;{@link #defaults}&lt;/b&gt;&lt;/tt&gt; config property.
		/// </htmlSummary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <optional>Optional Field</optional>
		[ScriptName("defaultWidth")]
		public System.Number DefaultWidth;
		
		/// <summary>
		/// Default sortable of columns which have no
		/// sortable specified (defaults to false). This property shall preferably be configured
		/// through the {@link #defaults} config property.
		/// </summary>
		/// <htmlSummary>
		/// Default sortable of columns which have no
		/// sortable specified (defaults to &lt;tt&gt;false&lt;/tt&gt;). This property shall preferably be configured
		/// through the &lt;tt&gt;&lt;b&gt;{@link #defaults}&lt;/b&gt;&lt;/tt&gt; config property.
		/// </htmlSummary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <optional>Optional Field</optional>
		[ScriptName("defaultSortable")]
		public bool DefaultSortable;
		
		/// <summary>
		/// An Array of object literals. The config options defined by
		/// {@link Ext.grid.Column} are the options which may appear in the object literal for each
		/// individual column definition.
		/// </summary>
		/// <htmlSummary>
		/// An Array of object literals. The config options defined by
		/// &lt;b&gt;{@link Ext.grid.Column}&lt;/b&gt; are the options which may appear in the object literal for each
		/// individual column definition.
		/// </htmlSummary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		[ScriptName("columns")]
		public System.Array Columns;
		
		/// <summary>
		/// Object literal which will be used to apply {@link Ext.grid.Column}
		/// configuration options to all {@link #columns}. Configuration options specified with
		/// individual {@link Ext.grid.Column column} configs will supersede these {@link #defaults}.
		/// </summary>
		/// <htmlSummary>
		/// Object literal which will be used to apply {@link Ext.grid.Column}
		/// configuration options to all &lt;tt&gt;&lt;b&gt;{@link #columns}&lt;/b&gt;&lt;/tt&gt;. Configuration options specified with
		/// individual {@link Ext.grid.Column column} configs will supersede these &lt;tt&gt;&lt;b&gt;{@link #defaults}&lt;/b&gt;&lt;/tt&gt;.
		/// </htmlSummary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		[ScriptName("defaults")]
		public object Defaults;
		
		/// <summary>
		/// Fires when the width of a column is programmaticially changed using
		/// {@link #setColumnWidth}.
		/// Note internal resizing suppresses the event from firing. See also
		/// {@link Ext.grid.GridPanel}.{@link #columnresize}.
		/// </summary>
		/// <htmlSummary>
		/// Fires when the width of a column is programmaticially changed using
		/// &lt;code&gt;{@link #setColumnWidth}&lt;/code&gt;.
		/// Note internal resizing suppresses the event from firing. See also
		/// {@link Ext.grid.GridPanel}.&lt;code&gt;{@link #columnresize}&lt;/code&gt;.
		/// </htmlSummary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		[ScriptName("widthchangeEventName")]
		public const string WidthchangeEventName = "widthchange";
		
		/// <summary>Fires when the text of a header changes.</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		[ScriptName("headerchangeEventName")]
		public const string HeaderchangeEventName = "headerchange";
		
		/// <summary>Fires when a column is hidden or &quot;unhidden&quot;.</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		[ScriptName("hiddenchangeEventName")]
		public const string HiddenchangeEventName = "hiddenchange";
		
		/// <summary>Fires when a column is moved.</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		[ScriptName("columnmovedEventName")]
		public const string ColumnmovedEventName = "columnmoved";
		
		/// <summary>Fires when the configuration is changed</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		[ScriptName("configchangeEventName")]
		public const string ConfigchangeEventName = "configchange";
		#endregion
		
		#region Properties
		/// <summary>
		/// An Array of {@link Ext.grid.Column Column definition} objects representing the configuration
		/// of this ColumnModel. See {@link Ext.grid.Column} for the configuration properties that may
		/// be specified.
		/// </summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		[ScriptName("config")]
		[IntrinsicProperty()]
		public System.Array Config
		{
			get
			{
				throw new System.Exception("Imported - not implemented");
			}
			set
			{
			}
		}
		#endregion
		
		#region Methods
		/// <summary>Returns the id of the column at the specified index.</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <param name="index">The column index</param>
		/// <returns>the id</returns>
		[ScriptName("getColumnId")]
		public string GetColumnId(System.Number index)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Reconfigures this column model according to the passed Array of column definition objects.
		/// For a description of the individual properties of a column definition object, see the
		/// Config Options.  Causes the {@link #configchange} event to be fired. A {@link Ext.grid.GridPanel GridPanel}
		/// using this ColumnModel will listen for this event and refresh its UI automatically.
		/// </summary>
		/// <htmlSummary>
		/// &lt;p&gt;Reconfigures this column model according to the passed Array of column definition objects.
		/// For a description of the individual properties of a column definition object, see the
		/// &lt;a href=&quot;#Ext.grid.ColumnModel-configs&quot;&gt;Config Options&lt;/a&gt;.&lt;/p&gt;
		/// &lt;p&gt;Causes the {@link #configchange} event to be fired. A {@link Ext.grid.GridPanel GridPanel}
		/// using this ColumnModel will listen for this event and refresh its UI automatically.&lt;/p&gt;
		/// </htmlSummary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <param name="config">Array of Column definition objects.</param>
		/// <param name="initial">
		/// Specify &lt;tt&gt;true&lt;/tt&gt; to bypass cleanup which deletes the &lt;tt&gt;totalWidth&lt;/tt&gt;
		/// and destroys existing editors.
		/// </param>
		[ScriptName("setConfig")]
		public void SetConfig(System.Array config, bool initial)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Returns the column for a specified id.</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <param name="id">The column id</param>
		/// <returns>the column</returns>
		[ScriptName("getColumnById")]
		public object GetColumnById(string id)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Returns the index for a specified column id.</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <param name="id">The column id</param>
		/// <returns>the index, or -1 if not found</returns>
		[ScriptName("getIndexById")]
		public System.Number GetIndexById(string id)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Moves a column from one position to another.</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <param name="oldIndex">The index of the column to move.</param>
		/// <param name="newIndex">The position at which to reinsert the coolumn.</param>
		[ScriptName("moveColumn")]
		public void MoveColumn(System.Number oldIndex, System.Number newIndex)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Returns the number of columns.</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <param name="visibleOnly">Optional. Pass as true to only include visible columns.</param>
		[ScriptName("getColumnCount")]
		public System.Number GetColumnCount(bool visibleOnly)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Returns true if the specified column is sortable.</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <param name="col">The column index</param>
		[ScriptName("isSortable")]
		public bool IsSortable(System.Number col)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Returns true if the specified column menu is disabled.</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <param name="col">The column index</param>
		[ScriptName("isMenuDisabled")]
		public bool IsMenuDisabled(System.Number col)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Returns the rendering (formatting) function defined for the column.</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <param name="col">The column index.</param>
		/// <returns>The function used to render the cell. See {@link #setRenderer}.</returns>
		[ScriptName("getRenderer")]
		public System.Function GetRenderer(System.Number col)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Sets the rendering (formatting) function for a column. See {@link Ext.util.Format} for some
		/// default formatting functions.
		/// </summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <param name="col">The column index</param>
		/// <param name="fn">
		/// The function to use to process the cell&apos;s raw data
		/// to return HTML markup for the grid view. The render function is called with
		/// the following parameters:&lt;ul&gt;
		/// &lt;li&gt;&lt;b&gt;value&lt;/b&gt; : Object&lt;p class=&quot;sub-desc&quot;&gt;The data value for the cell.&lt;/p&gt;&lt;/li&gt;
		/// &lt;li&gt;&lt;b&gt;metadata&lt;/b&gt; : Object&lt;p class=&quot;sub-desc&quot;&gt;An object in which you may set the following attributes:&lt;ul&gt;
		/// &lt;li&gt;&lt;b&gt;css&lt;/b&gt; : String&lt;p class=&quot;sub-desc&quot;&gt;A CSS class name to add to the cell&apos;s TD element.&lt;/p&gt;&lt;/li&gt;
		/// &lt;li&gt;&lt;b&gt;attr&lt;/b&gt; : String&lt;p class=&quot;sub-desc&quot;&gt;An HTML attribute definition string to apply to the data container element &lt;i&gt;within&lt;/i&gt; the table cell
		/// (e.g. &apos;style=&quot;color:red;&quot;&apos;).&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;/li&gt;
		/// &lt;li&gt;&lt;b&gt;record&lt;/b&gt; : Ext.data.record&lt;p class=&quot;sub-desc&quot;&gt;The {@link Ext.data.Record} from which the data was extracted.&lt;/p&gt;&lt;/li&gt;
		/// &lt;li&gt;&lt;b&gt;rowIndex&lt;/b&gt; : Number&lt;p class=&quot;sub-desc&quot;&gt;Row index&lt;/p&gt;&lt;/li&gt;
		/// &lt;li&gt;&lt;b&gt;colIndex&lt;/b&gt; : Number&lt;p class=&quot;sub-desc&quot;&gt;Column index&lt;/p&gt;&lt;/li&gt;
		/// &lt;li&gt;&lt;b&gt;store&lt;/b&gt; : Ext.data.Store&lt;p class=&quot;sub-desc&quot;&gt;The {@link Ext.data.Store} object from which the Record was extracted.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
		/// </param>
		[ScriptName("setRenderer")]
		public void SetRenderer(System.Number col, System.Delegate fn)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Returns the width for the specified column.</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <param name="col">The column index</param>
		[ScriptName("getColumnWidth")]
		public System.Number GetColumnWidth(System.Number col)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Sets the width for a column.</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <param name="col">The column index</param>
		/// <param name="width">The new width</param>
		/// <param name="suppressEvent">
		/// True to suppress firing the <c>{@link #widthchange}</c>
		/// event. Defaults to false.
		/// </param>
		[ScriptName("setColumnWidth")]
		public void SetColumnWidth(System.Number col, System.Number width, bool suppressEvent)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Returns the total width of all columns.</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <param name="includeHidden">True to include hidden column widths</param>
		[ScriptName("getTotalWidth")]
		public System.Number GetTotalWidth(bool includeHidden)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Returns the header for the specified column.</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <param name="col">The column index</param>
		[ScriptName("getColumnHeader")]
		public string GetColumnHeader(System.Number col)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Sets the header for a column.</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <param name="col">The column index</param>
		/// <param name="header">The new header</param>
		[ScriptName("setColumnHeader")]
		public void SetColumnHeader(System.Number col, string header)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Returns the tooltip for the specified column.</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <param name="col">The column index</param>
		[ScriptName("getColumnTooltip")]
		public string GetColumnTooltip(System.Number col)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Sets the tooltip for a column.</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <param name="col">The column index</param>
		/// <param name="tooltip">The new tooltip</param>
		[ScriptName("setColumnTooltip")]
		public void SetColumnTooltip(System.Number col, string tooltip)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Returns the dataIndex for the specified column.
		/// 
		/// // Get field name for the column
		/// var fieldName = grid.getColumnModel().getDataIndex(columnIndex);
		/// </summary>
		/// <htmlSummary>
		/// Returns the dataIndex for the specified column.
		/// &lt;pre&gt;&lt;code&gt;
		/// // Get field name for the column
		/// var fieldName = grid.getColumnModel().getDataIndex(columnIndex);
		/// &lt;/code&gt;&lt;/pre&gt;
		/// </htmlSummary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <param name="col">The column index</param>
		/// <returns>The column&apos;s dataIndex</returns>
		[ScriptName("getDataIndex")]
		public string GetDataIndex(System.Number col)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Sets the dataIndex for a column.</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <param name="col">The column index</param>
		/// <param name="dataIndex">The new dataIndex</param>
		[ScriptName("setDataIndex")]
		public void SetDataIndex(System.Number col, string dataIndex)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Finds the index of the first matching column for the given dataIndex.</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <param name="col">The dataIndex to find</param>
		/// <returns>The column index, or -1 if no match was found</returns>
		[ScriptName("findColumnIndex")]
		public System.Number FindColumnIndex(string col)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Returns true if the cell is editable.
		/// 
		/// var store = new Ext.data.Store({...});
		/// var colModel = new Ext.grid.ColumnModel({
		/// columns: [...],
		/// isCellEditable: function(col, row) {
		/// var record = store.getAt(row);
		/// if (record.get(&apos;readonly&apos;)) { // replace with your condition
		/// return false;
		/// }
		/// return Ext.grid.ColumnModel.prototype.isCellEditable.call(this, col, row);
		/// }
		/// });
		/// var grid = new Ext.grid.GridPanel({
		/// store: store,
		/// colModel: colModel,
		/// ...
		/// });
		/// </summary>
		/// <htmlSummary>
		/// Returns true if the cell is editable.
		/// &lt;pre&gt;&lt;code&gt;
		/// var store = new Ext.data.Store({...});
		/// var colModel = new Ext.grid.ColumnModel({
		/// columns: [...],
		/// isCellEditable: function(col, row) {
		/// var record = store.getAt(row);
		/// if (record.get(&apos;readonly&apos;)) { // replace with your condition
		/// return false;
		/// }
		/// return Ext.grid.ColumnModel.prototype.isCellEditable.call(this, col, row);
		/// }
		/// });
		/// var grid = new Ext.grid.GridPanel({
		/// store: store,
		/// colModel: colModel,
		/// ...
		/// });
		/// &lt;/code&gt;&lt;/pre&gt;
		/// </htmlSummary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <param name="colIndex">The column index</param>
		/// <param name="rowIndex">The row index</param>
		[ScriptName("isCellEditable")]
		public bool IsCellEditable(System.Number colIndex, System.Number rowIndex)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Returns the editor defined for the cell/column.</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <param name="colIndex">The column index</param>
		/// <param name="rowIndex">The row index</param>
		/// <returns>
		/// The {@link Ext.Editor Editor} that was created to wrap
		/// the {@link Ext.form.Field Field} used to edit the cell.
		/// </returns>
		[ScriptName("getCellEditor")]
		public ext.Editor GetCellEditor(System.Number colIndex, System.Number rowIndex)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Sets if a column is editable.</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <param name="col">The column index</param>
		/// <param name="editable">True if the column is editable</param>
		[ScriptName("setEditable")]
		public void SetEditable(System.Number col, bool editable)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Returns true if the column is {@link Ext.grid.Column#hidden hidden},
		/// false otherwise.
		/// </summary>
		/// <htmlSummary>
		/// Returns &lt;tt&gt;true&lt;/tt&gt; if the column is &lt;code&gt;{@link Ext.grid.Column#hidden hidden}&lt;/code&gt;,
		/// &lt;tt&gt;false&lt;/tt&gt; otherwise.
		/// </htmlSummary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <param name="colIndex">The column index</param>
		[ScriptName("isHidden")]
		public bool IsHidden(System.Number colIndex)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Returns true if the column is {@link Ext.grid.Column#fixed fixed},
		/// false otherwise.
		/// </summary>
		/// <htmlSummary>
		/// Returns &lt;tt&gt;true&lt;/tt&gt; if the column is &lt;code&gt;{@link Ext.grid.Column#fixed fixed}&lt;/code&gt;,
		/// &lt;tt&gt;false&lt;/tt&gt; otherwise.
		/// </htmlSummary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <param name="colIndex">The column index</param>
		[ScriptName("isFixed")]
		public bool IsFixed(System.Number colIndex)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Returns true if the column can be resized</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		[ScriptName("isResizable")]
		public bool IsResizable()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Sets if a column is hidden.
		/// 
		/// myGrid.getColumnModel().setHidden(0, true); // hide column 0 (0 = the first column).
		/// </summary>
		/// <htmlSummary>
		/// Sets if a column is hidden.
		/// &lt;pre&gt;&lt;code&gt;
		/// myGrid.getColumnModel().setHidden(0, true); // hide column 0 (0 = the first column).
		/// &lt;/code&gt;&lt;/pre&gt;
		/// </htmlSummary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <param name="colIndex">The column index</param>
		/// <param name="hidden">True if the column is hidden</param>
		[ScriptName("setHidden")]
		public void SetHidden(System.Number colIndex, bool hidden)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Sets the editor for a column and destroys the prior editor.</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <param name="col">The column index</param>
		/// <param name="editor">The editor object</param>
		[ScriptName("setEditor")]
		public void SetEditor(System.Number col, object editor)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Destroys this column model by purging any event listeners. Destroys and dereferences all Columns.</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		[ScriptName("destroy")]
		public void Destroy()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Returns the column configs that return true by the passed function that is called
		/// with (columnConfig, index)
		/// 
		/// // returns an array of column config objects for all hidden columns
		/// var columns = grid.getColumnModel().getColumnsBy(function(c){
		/// return c.hidden;
		/// });
		/// </summary>
		/// <htmlSummary>
		/// Returns the column configs that return true by the passed function that is called
		/// with (columnConfig, index)
		/// &lt;pre&gt;&lt;code&gt;
		/// // returns an array of column config objects for all hidden columns
		/// var columns = grid.getColumnModel().getColumnsBy(function(c){
		/// return c.hidden;
		/// });
		/// &lt;/code&gt;&lt;/pre&gt;
		/// </htmlSummary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <param name="fn">
		/// A function which, when passed a {@link Ext.grid.Column Column} object, must
		/// return <c>true</c> if the column is to be included in the returned Array.
		/// </param>
		/// <param name="scope">
		/// The scope (<c>this</c> reference) in which the function
		/// is executed. Defaults to this ColumnModel.
		/// </param>
		/// <returns>result</returns>
		[ScriptName("getColumnsBy")]
		public System.Array GetColumnsBy(System.Delegate fn, object scope)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Returns the column configs that return true by the passed function that is called
		/// with (columnConfig, index)
		/// 
		/// // returns an array of column config objects for all hidden columns
		/// var columns = grid.getColumnModel().getColumnsBy(function(c){
		/// return c.hidden;
		/// });
		/// </summary>
		/// <htmlSummary>
		/// Returns the column configs that return true by the passed function that is called
		/// with (columnConfig, index)
		/// &lt;pre&gt;&lt;code&gt;
		/// // returns an array of column config objects for all hidden columns
		/// var columns = grid.getColumnModel().getColumnsBy(function(c){
		/// return c.hidden;
		/// });
		/// &lt;/code&gt;&lt;/pre&gt;
		/// </htmlSummary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		/// <param name="fn">
		/// A function which, when passed a {@link Ext.grid.Column Column} object, must
		/// return <c>true</c> if the column is to be included in the returned Array.
		/// </param>
		/// <returns>result</returns>
		[ScriptName("getColumnsBy")]
		public System.Array GetColumnsBy(System.Delegate fn)
		{
			throw new System.Exception("Imported - not implemented");
		}
		#endregion
		
		#region Events
		/// <summary>
		/// Fires when the width of a column is programmaticially changed using
		/// {@link #setColumnWidth}.
		/// Note internal resizing suppresses the event from firing. See also
		/// {@link Ext.grid.GridPanel}.{@link #columnresize}.
		/// </summary>
		/// <htmlSummary>
		/// Fires when the width of a column is programmaticially changed using
		/// &lt;code&gt;{@link #setColumnWidth}&lt;/code&gt;.
		/// Note internal resizing suppresses the event from firing. See also
		/// {@link Ext.grid.GridPanel}.&lt;code&gt;{@link #columnresize}&lt;/code&gt;.
		/// </htmlSummary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		[ScriptName("widthchange")]
		public event ext.auto.Delegate_ext_grid_ColumnModel_And_System_Number_And_System_Number Widthchange;
		
		/// <summary>Fires when the text of a header changes.</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		[ScriptName("headerchange")]
		public event ext.auto.Delegate_ext_grid_ColumnModel_And_System_Number_And_System_String Headerchange;
		
		/// <summary>Fires when a column is hidden or &quot;unhidden&quot;.</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		[ScriptName("hiddenchange")]
		public event ext.auto.Delegate_ext_grid_ColumnModel_And_System_Number_And_System_Boolean Hiddenchange;
		
		/// <summary>Fires when a column is moved.</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		[ScriptName("columnmoved")]
		public event ext.auto.Delegate_ext_grid_ColumnModel_And_System_Number_And_System_Number Columnmoved;
		
		/// <summary>Fires when the configuration is changed</summary>
		/// <definedin>src\widgets\grid\ColumnModel.js</definedin>
		[ScriptName("configchange")]
		public event ext.auto.Delegate_ext_grid_ColumnModel Configchange;
		#endregion
	}
}
